<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>RenderMan Shading Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/RenderMan_Shading_Language"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-RenderMan_Shading_Language rootpage-RenderMan_Shading_Language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">RenderMan Shading Language</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p><b>RenderMan Shading Language</b> (abrégé en <b>RSL</b>, en français <i>langage d'ombrage RenderMan</i>) est un composant de <a href="RenderMan_Interface_Specification" title="RenderMan Interface Specification">RenderMan Interface Specification</a> qui est utilisé pour définir des <a href="Shader" title="Shader">shaders</a>. La syntaxe du langage est <a href="C_(langage)" title="C (langage)">de type C</a>.
</p><p>Un shader écrit en RSL peut être utilisé sans modification sur n'importe quel <a href="Moteur_de_rendu_3D" title="Moteur de rendu 3D">moteur de rendu 3D</a> conforme à RenderMan, tel que <a href="PhotoRealistic_RenderMan" title="PhotoRealistic RenderMan">PhotoRealistic RenderMan</a> de Pixar, 3Delight <a href="https://en.wikipedia.org/wiki/3Delight" class="extiw external" title="en:3Delight"><span class="indicateur-langue" title="Article en anglais : « 3Delight »">(en)</span></a> de DNA Research, Air de Sitexgraphics ou une solution open source telle que Pixie <a href="https://en.wikipedia.org/wiki/Pixie_(%E6%B8%B2%E6%9F%93%E5%99%A8)" class="extiw external" title="en:Pixie (渲染器)"><span class="indicateur-langue" title="Article en anglais : « Pixie (渲染器) »">(en)</span></a> ou Aqsis <a href="https://en.wikipedia.org/wiki/Aqsis" class="extiw external" title="en:Aqsis"><span class="indicateur-langue" title="Article en anglais : « Aqsis »">(en)</span></a>.
</p><p><i>RenderMan Shading Language</i> définit des fonctions autonomes et cinq types de shaders : shaders de surface, de lumière, de volume, imageur et de déplacement.
</p><p>Un exemple de shader de surface qui définit une surface métallique est :
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="n">surface</span><span class="w"> </span><span class="n">metal</span><span class="w"> </span><span class="p">(</span><span class="kt">float</span><span class="w"> </span><span class="n">Ka</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">Ks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">roughness</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.1</span><span class="p">;)</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">normal</span><span class="w"> </span><span class="n">Nf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">faceforward</span><span class="w"> </span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">N</span><span class="p">),</span><span class="w"> </span><span class="n">I</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector</span><span class="w"> </span><span class="n">V</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">normalize</span><span class="w"> </span><span class="p">(</span><span class="n">I</span><span class="p">);</span>
<span class="w"> </span><span class="n">Oi</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Os</span><span class="p">;</span>
<span class="w"> </span><span class="n">Ci</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Os</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Cs</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">Ka</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">ambient</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Ks</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">specular</span><span class="w"> </span><span class="p">(</span><span class="n">Nf</span><span class="p">,</span><span class="w"> </span><span class="n">V</span><span class="p">,</span><span class="w"> </span><span class="n">roughness</span><span class="p">));</span>
<span class="p">}</span>
</pre></div>
<p>Les shaders réalisent leur travail en lisant en en écrivant des variables spéciales telles que Cs (couleur de surface), N (normale en un point donné) et Ci (couleur de surface finale). Les arguments des shaders sont des paramètres globaux qui sont attachés aux objets du modèle (et donc un shader de métal peut être utilisé pour différents métaux). Les shaders n'ont pas de valeur de retour, mais des fonctions peuvent être définies, qui prennent des arguments en entrée et retournent une valeur. Par exemple, la fonction suivante calcule la longueur d'un vecteur avec l'opérateur <a href="Produit_scalaire" title="Produit scalaire">produit scalaire</a> "." :
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">float</span><span class="w"> </span><span class="nf">length</span><span class="w"> </span><span class="p">(</span><span class="n">vector</span><span class="w"> </span><span class="n">v</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sqrt</span><span class="w"> </span><span class="p">(</span><span class="n">v</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="n">v</span><span class="p">);</span><span class="w"> </span><span class="cm">/* . is a dot product */</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Bibliographie">Bibliographie</h3></div>
<ul><li><span class="ouvrage" id="Upstill1990"><span class="ouvrage" id="Steve_Upstill1990"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Steve <span class="nom_auteur">Upstill</span>, <cite class="italique" lang="en">The RenderMan companion : a programmer's guide to realistic computer graphics</cite>, Reading, Mass, Addison-Wesley, <time>1990</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">0-201-50868-0</span>, <a rel="nofollow" class="external text" href="https://archive.org/details/rendermancompani00upst">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+RenderMan+companion+%3A+a+programmer%27s+guide+to+realistic+computer+graphics&rft.place=Reading%2C+Mass&rft.pub=Addison-Wesley&rft.aulast=Upstill&rft.aufirst=Steve&rft.date=1990&rft.isbn=0-201-50868-0&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Frendermancompani00upst&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ARenderMan+Shading+Language"></span></span></span></li>
<li><span class="ouvrage" id="ApodacaGritz1999"><span class="ouvrage" id="Anthony_ApodacaLarry_Gritz1999"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Anthony <span class="nom_auteur">Apodaca</span> et Larry <span class="nom_auteur">Gritz</span>, <cite class="italique" lang="en">Advanced RenderMan : creating CGI for motion pictures</cite>, San Francisco, Morgan Kaufmann, <time>1999</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">1-55860-618-1</span>, <a rel="nofollow" class="external text" href="https://archive.org/details/advancedrenderma00apod_0">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Advanced+RenderMan+%3A+creating+CGI+for+motion+pictures&rft.place=San+Francisco&rft.pub=Morgan+Kaufmann&rft.aulast=Apodaca&rft.aufirst=Anthony&rft.au=Gritz%2C+Larry&rft.date=1999&rft.isbn=1-55860-618-1&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fadvancedrenderma00apod_0&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ARenderMan+Shading+Language"></span></span></span></li>
<li><span class="ouvrage" id="CortesRaghavachary2008"><span class="ouvrage" id="Rudy_CortesSaty_Raghavachary2008"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Rudy <span class="nom_auteur">Cortes</span> et Saty <span class="nom_auteur">Raghavachary</span>, <cite class="italique" lang="en">The RenderMan shading language guide</cite>, Boston, Mass, Thomson Course Technology, <time>2008</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">1-59863-286-8</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+RenderMan+shading+language+guide&rft.place=Boston%2C+Mass&rft.pub=Thomson+Course+Technology&rft.aulast=Cortes&rft.aufirst=Rudy&rft.au=Raghavachary%2C+Saty&rft.date=2008&rft.isbn=1-59863-286-8&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ARenderMan+Shading+Language"></span></span></span></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><a rel="nofollow" class="external text" href="https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html">Shading Language (RSL) documentation</a></li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’imagerie numérique</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer skin-invert-image" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de Disney</span> • <span class="bandeau-sous-portail-texte">section <b>Pixar</b></span></span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-09-05" href="https://fr.wikipedia.org/wiki/?title=RenderMan_Shading_Language&oldid=228728794">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>